＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

                        PC-FXGAオーサリングソフトウェア
                    『ＧＭＡＫＥＲ』スタータキットプラス(Ver.1.1)
                               システム構成の解説（改訂版）

                                        日本電気ホームエレクトロニクス株式会社
                                                          １９９６年７月３０日

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

目次

第１章  はじめに
１．１  システム構成

第２章  処理の流れ
２．１  アセンブリ言語による開発
２．２  Ｃ言語、アセンブリ言語による開発
２．３  Ｃ言語による開発

第３章  プログラムの作成手順
３．１  モデルデータの作成
３．２  プログラム例

第４章  ＣＤエミュレータ用データの作成手順
４．１  ＩＰＬ
４．２  ＣＤ－ＲＯＭのフォーマット
４．２．１  警告メッセージ
４．２．２  レジストレーションブロック
４．２．３  インフォメーションブロック
４．３  ＣＤエミュレータ用データの作成例
４．４  ＣＤエミュレータを使用してのデバック方法

第５章  注意事項
５．１  開発上の注意

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

第１章  はじめに

PC-FXGAオーサリングソフトウェア「ＧＭＡＫＥＲ」スタータキット（以下、”「ＧＭ
ＡＫＥＲ」スタータキット”と略します。）および PC-FXGAオーサリングソフトウェア
「ＧＭＡＫＥＲ」スタータキットプラス（以下、”「ＧＭＡＫＥＲ」スタータキット
プラス”と略します。）は、ＰＣ－ＦＸＧＡ上で動作するソフトウェアを作成する為
の、一連のソフトウェアツールです。


●アセンブリ言語、Ｃ言語による開発

この「ＧＭＡＫＥＲ」スタータキットおよび「ＧＭＡＫＥＲ」スタータキットプラスを
使うことによって、アセンブリ言語あるいはＣ言語によるソフトウェアの開発を行う
ことができます。

アセンブリ言語はアセンブラを、Ｃ言語はＣコンパイラを使用してオブジェクトファ
イルを作成し、それらをリンカにより１つにまとめ、実行形式のプログラムにしたも
のが、ＰＣ－ＦＸＧＡ上で動作します。

高速な処理が望まれる部分や、ハードに直接関わるような部分はアセンブリ言語で作
成し、その他の部分は、記述がアセンブリ言語よりも容易で、柔軟な構造を持つＣ言
語で作成することにより、効率の良い開発を行なうことができます。


●効率の良いデバッグ作業

この「ＧＭＡＫＥＲ」スタータキットには、作成した実行形式のプログラムをマシン
語およびアセンブリ言語、Ｃ言語のソースコードレベルでデバッグできるソースコー
ドデバッガが用意されています。

ソースコードデバッカにより、ブレイクポイントの設定や、ステップ、トレース等の
命令による、実行プログラムの動作を確認することが可能です。またＣ言語で宣言さ
れた変数の参照や、式評価などＣ言語レベルでのデバッグ作業も容易にします。


■１．１  システム構成
                ＋－＋
      ＋－－－＋｜  ｜
      ｜      ｜｜  ｜        ＋－＋ PC-FXGA
      ｜      ｜｜  ＋－－－－＋  ＋－－－－－－－→テレビ
      ＋－－－＋＋－＋        ＋－＋
   パーソナルコンピュータ

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

第２章  処理の流れ

■２．１  アセンブリ言語による開発

  ＋－－－－－－－－－＋
  ｜  アセンブリ言語  ｜
  ｜ ソースプログラム ｜
  ＋－－－－－－－－－＋
            ↓                  ＋－－－－－－－－－＋
  ＋－－－－－－－－－＋        ｜  ＥＸファイル    ｜
  ｜    ＦＸＡＳ      ｜  ＋－→｜（標準実行形式）  ｜
  ｜   アセンブラ     ｜  ｜    ＋－－－－－－－－－＋
  ＋－－－－－－－－－＋  ｜    ＋－－－－－－－－－＋
            ↓            ＋－→｜  ＭＸファイル    ｜ -M [ファイル名]
  ＋－－－－－－－－－＋  ｜    ｜（モトローラ形式  ｜ -P [アドレス]
  ｜   オブジェクト   ｜  ｜    ＋－－－－－－－－－＋
  ｜     ファイル     ｜  ｜    ＋－－－－－－－－－＋
  ｜    _startup.o    ｜  ＋－→｜  ＢＸファイル    ｜ -b [ファイル名]
  ｜    ライブラリ    ｜  ｜    ｜ （バイナリ形式） ｜
  ＋－－－－－－－－－＋  ｜    ＋－－－－－－－－－＋
            ↓            ｜    ＋－－－－－－－－－＋
  ＋－－－－－－－－－＋  ＋－→｜  ＢＩＮファイル  ｜ -B [ファイル名]
  ｜    ＦＸＬＫ      ＋－＋    ｜ （バイナリ形式） ｜
  ｜     リンカ       ｜  ｜    ＋－－－－－－－－－＋
  ＋－－－－－－－－－＋  ｜    ＋－－－－－－－－－＋
            ↓            ＋－→｜  ＨＥＸファイル  ｜ -H [ファイル名]
  ＋－－－－－－－－－＋  ｜    ｜ （インテル形式） ｜
  ｜    実行形式      ｜  ｜    ＋－－－－－－－－－＋
  ｜   プログラム     ｜  ｜    ＋－－－－－－－－－＋
  ＋－－－－－－－－－＋  ＋－→｜  マップファイル  ｜ -m [ファイル名]
            ↓            ｜    ｜                  ｜
  ＋－－－－－－－－－＋  ｜    ＋－－－－－－－－－＋
  ｜     ＦＸＤＢ     ｜  ｜    ＋－－－－－－－－－＋
  ｜   ソースコード   ｜  ＋－→｜ シンボルファイル ｜ -y [ファイル名]
  ｜     デバッガ     ｜        ｜                  ｜
  ＋－－－－－－－－－＋        ＋－－－－－－－－－＋

・BXファイル、MXファイル、BINファイル、HEXファイルについては、指定のない限り出
  力されません。
・スイッチ等の詳細はFXLK.TXT("FXLK.EXE"の解説)を参照してください。


■２．２  Ｃ言語、アセンブリ言語による開発

  ＋－－－－－－－－－＋
  ｜  アセンブリ言語  ｜        ＋－－－－－－－－－＋
  ｜ ソースプログラム ｜        ｜     Ｃ言語       ｜
  ＋－－－－－－－－－＋        ｜ ソースプログラム ｜
            ↓                  ＋－－－－－－－－－＋
  ＋－－－－－－－－－＋                  ↓
  ｜    ＦＸＡＳ      ｜        ＋－－－－－－－－－＋
  ｜   アセンブラ     ｜        ｜     ＦＸＣＣ     ｜
  ＋－－－－－－－－－＋        ｜   Ｃコンパイラ   ｜
            ↓                  ＋－－－－－－－－－＋
  ＋－－－－－－－－－＋                  ↓
  ｜   オブジェクト   ｜        ＋－－－－－－－－－＋
  ｜     ファイル     ｜        ｜     ＦＸＡＳ     ｜
  ｜    _startup.o    ｜        ｜   アセンブラ     ｜
  ｜    ライブラリ    ｜        ＋－－－－－－－－－＋
  ＋－－－－＋－－－－＋
            ｜                  ＋－－－－－－－－－＋
            ｜            ＋－→｜  ＥＸファイル    ｜
            ｜            ｜    ｜ （標準実行形式） ｜
            ｜            ｜    ＋－－－－－－－－－＋
            ↓            ｜    ＋－－－－－－－－－＋
  ＋－－－－－－－－－＋  ＋－→｜  ＭＸファイル    ｜
  ｜    ＦＸＬＫ      ＋－＋    ｜（モトローラ形式）｜
  ｜     リンカ       ｜  ｜    ＋－－－－－－－－－＋
  ＋－－－－－－－－－＋  ｜    ＋－－－－－－－－－＋
            ↓            ＋－→｜  ＢＸファイル    ｜
  ＋－－－－－－－－－＋  ｜    ｜ （バイナリ形式） ｜
  ｜    実行形式      ｜  ｜    ＋－－－－－－－－－＋
  ｜   プログラム     ｜  ｜    ＋－－－－－－－－－＋
  ＋－－－－－－－－－＋  ＋－→｜  ＢＩＮファイル  ｜
            ↓            ｜    ｜ （バイナリ形式） ｜
  ＋－－－－－－－－－＋  ｜    ＋－－－－－－－－－＋
  ｜     ＦＸＤＢ     ｜  ｜    ＋－－－－－－－－－＋
  ｜   ソースコード   ｜  ＋－→｜ ＨＥＸファイル   ｜
  ｜     デバッガ     ｜        ｜ （インテル形式） ｜
  ＋－－－－－－－－－＋        ＋－－－－－－－－－＋


・BXファイル、MXファイル、BINファイル、HEXファイルについては、指定のない限り出
  力されません。
・スイッチ等の詳細はFXLK.TXT("FXLK.EXE"の解説)を参照してください。


■２．３  Ｃ言語による開発

  ＋－－－－－－－－－＋
  ｜     Ｃ言語       ｜
  ｜ ソースプログラム ｜
  ＋－－－－－－－－－＋
            ↓
  ＋－－－－－－－－－＋
  ｜     ＦＸＣＣ     ｜
  ｜   Ｃコンパイラ   ｜
  ＋－－－－－－－－－＋
            ↓
  ＋－－－－－－－－－＋
  ｜     ＦＸＡＳ     ｜
  ｜   アセンブラ     ｜
  ＋－－－－－－－－－＋
            ↓
  ＋－－－－－－－－－＋
  ｜   オブジェクト   ｜
  ｜     ファイル     ｜        ＋－－－－－－－－－＋
  ｜    _startup.o    ｜  ＋－→｜  ＥＸファイル    ｜
  ｜    ライブラリ    ｜  ｜    ｜ （標準実行形式） ｜
  ＋－－－－－－－－－＋  ｜    ＋－－－－－－－－－＋
            ↓            ｜    ＋－－－－－－－－－＋
  ＋－－－－－－－－－＋  ＋－→｜  ＭＸファイル    ｜
  ｜    ＦＸＬＫ      ＋－＋    ｜（モトローラ形式）｜
  ｜     リンカ       ｜  ｜    ＋－－－－－－－－－＋
  ＋－－－－－－－－－＋  ｜    ＋－－－－－－－－－＋
            ↓            ＋－→｜  ＢＸファイル    ｜
  ＋－－－－－－－－－＋  ｜    ｜ （バイナリ形式） ｜
  ｜    実行形式      ｜  ｜    ＋－－－－－－－－－＋
  ｜   プログラム     ｜  ｜    ＋－－－－－－－－－＋
  ＋－－－－－－－－－＋  ＋－→｜  ＢＩＮファイル  ｜
            ↓            ｜    ｜ （バイナリ形式） ｜
  ＋－－－－－－－－－＋  ｜    ＋－－－－－－－－－＋
  ｜     ＦＸＤＢ     ｜  ｜    ＋－－－－－－－－－＋
  ｜   ソースコード   ｜  ＋－→｜ ＨＥＸファイル   ｜
  ｜     デバッガ     ｜        ｜ （インテル形式） ｜
  ＋－－－－－－－－－＋        ＋－－－－－－－－－＋


・BXファイル、MXファイル、BINファイル、HEXファイルについては、指定のない限り出
  力されません。
・スイッチ等の詳細はFXLK.TXT("FXLK.EXE"の解説)を参照してください。

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

第３章  プログラムの作成手順

ここでは、PC-FXGAに同梱しています"アマチュア提供CD-ROM"のDoGAGENIE-1でモデル
データを作成し、そのモデルデータを画面に表示する手順を紹介します。

■３．１  モデルデータの作成例

	     ＋－－－－－－－－－－－－－－－－－－＋
	     ｜            DoGAGENIE-1             ｜
	     ｜ ＋－－－－－－－－－－－－－－－＋ ｜
	     ｜ ｜パーツアセンブラでモデルを作成｜ ｜
	     ｜ ＋－－－－－－－－－－－－－－－＋ ｜
	     ｜                 ↓                 ｜
	     ｜＋－－－－－－－－－－－－－－－－＋｜
	     ｜｜AGDコンバータでAGDファイルを作成｜｜
	     ｜＋－－－－－－－－－－－－－－－－＋｜
	     ＋－－－－－－－－－－－－－－－－－－＋
	                        ↓
	         ＋－－－－－－－－－－－－－－＋
	         ｜AGDL2Sで AGDファイルを最適化｜※必要に応じて
	         ＋－－－－－－－－－－－－－－＋
	                        ↓
	          ＋－－－－－－－－－－－－－＋
	          ｜AGD2AGCでAGCファイルを作成｜
	          ＋－－－－－－－－－－－－－＋

  DoGAGENIE-1 のパーツアセンブラで作成したモデルを AGD コンバータで AGD ファ
  イルに変換し、\FXGA\BIN\(デフォルトでインストールした場合)に収録されている
  AGDL2S.EXE, AGD2AGC.EXE を使用して AGC ファイルへ変換することによって、ラ
  イブラリによるモデリングデータの表示が可能になります。


■３．２  プログラム例

  ３．１で作成した AGC ファイルを MODEL.AGC という名前で使う例を示します。

- main.c -
#include <system.h>
#include <v93.h>
#include <nt.h>
#include <farl.h>
#include <agl.h>

#define PALDATSIZ (512)

#asm
	seg	dseg
palette_data::
;;; DoGAGENIE-1 専用パレットデータ
	binload "genie.acd",104
	align 4
model_data_length::
	binload	"model.agc",0,4
	align	4
model_data::
	binload	"model.agc",4
#endasm
extern unsigned short palette_data[];
extern long model_data_length;
extern int model_data[];

void
main(void)
{
  object obj;
  Material material;
  int angle = 0;

  /* Hu6261 画面モード設定 */
  init_nt();
  set_nt_mode(line263);
  {
    struct NT_PLO plo;

    plo.cpo0 = 0x8000;		/* 固定 */
    plo.cpo1 = plo.cpo2 = plo.cpo3 = 0x0000;
    set_pallet_offset(&plo);
  }
  /* カラーパレットの転送 */
  write_pallet_datas(0, palette_data, PALDATSIZ);

  /* HuC6273 設定。普段は変更しないでください */
  AGLInit();
  FarlSetWindowScaleReg(128 * 2, 128, -128 * 2, 128);
  FarlSetPEICMaskReg(FARL_ICMASK_I5C4);
  FarlSetTEControlReg(FARL_TE_ICM | FARL_TE_LTEN | FARL_TE_SPEN | FARL_TE_BCE);
  FarlValidateSwap();
  dispon(bg | spr);

  /* モデルデータの登録 */
  obj.geometryTop = model_data;
  obj.geometryLength = (model_data_length + sizeof(int) - 1) / sizeof(int);

  /* マテリアルの設定 */
  material.ambient  = 0x1000;
  material.diffuse  = 0x6FFF;
  material.specular = 0x7FFF;
  obj.material = &material;
  AGLSetMaterial(&material, 1);

  /* ライト設定 */
  AGLResetLight(AGL_LIGHT0);
  AGLResetLight(AGL_LIGHT1);
  AGLSetLight(AGL_LIGHT0, 0xf000, 0xf000, 0x0200, 0x7FFF);
  AGLRotateLightY(AGL_LIGHT0, 700);
  AGLRotateLightZ(AGL_LIGHT0, 3300);

  while (1) {
    AGLResetCamera();

    AGLTranslateCamera(0, -0x80, 0); 
    AGLRotateCameraX(900);
    AGLPerspectiveCamera(0xffc0);
    AGLZoomCamera(0x80, 0x80, 0x80);

    AGLResetObj(&obj);
    AGLScaleObj(&obj, 0x80, 0x80, 0x80);
    AGLRotateObjX(&obj, 900);
    AGLRotateObjZ(&obj, angle);
    AGLTranslateObj(&obj, 0, 0, 0);
    AGLFixPutObj(&obj);
    AGLShot();

    angle += 10;
    angle %= 3600;
  }
}
----------

  これをコンパイルしてリンクします。

fxcc -O2 -I\fxga\include -c main.c
fxlk @ind

  インダイレクトファイル ind の内容は以下のとおりです。

- ind -
/cseg:8000 -o sample.ex 
\fxga\lib\_startup.o 
main.o 
\fxga\lib\libagl.a \fxga\lib\vlib.a \fxga\lib\libfarl.a
\fxga\lib\_stack.o 
-------

  実行は次のように行います。詳細はFXDB.TXT("FXDB.EXE"の解説)を参照してくださ
  い。

fxdb ysample;rg

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

第４章  ＣＤエミュレータ用データ作成手順

ここでは、第３章で作成したプログラムを「ＧＭＡＫＥＲ」スタータキットプラスの
ＣＤエミュレータを使用して実行させるための、データの作成方法を紹介します。

そのために、実際にＣＤ－ＲＯＭからの動作手順を含めた説明を行い、実際にＣＤエ
ミュレータ用のデータの作成方法を説明します。

■４．１  ＩＰＬ

まず、電源投入されるとハードウェアのＩＰＬ－ＲＯＭのプログラムが動作し、ハー
ドウェアのイニシャライズを行います。その後、アプリケーションをＣＤ－ＲＯＭか
ら読み込み起動します。

《処理の流れ》

１．ハードウェアのイニシャライズ
  ハードウェアの初期化

２．タイトルの表示
  タイトルを表示して、ブートの指示（ＲＵＮボタンを押す）を待ちます。

３．アプリケーションの読み込み、実行
  ブートシーケンスに従い、ユーザープログラムをＭＲＡＭに読み込みます。

    １）ファーストユニットを捜す
      先頭にレジストレーションブロックがあるデータトラックを捜します。

    ２）レジストレーションブロックを読み込む
      ＰＣ－ＦＸ用か、またライセンスされているベンダーかどうかしらべます。

    ３）インフォメーションブロックを読み込む

    ４）ユーザープログラムのローディング
      インフォメーションブロックの内容に従い、ＣＤ－ＲＯＭよりユーザープロ
      グラムを読み込みます。

    ５）ユーザープログラムの実行
      インフォメーションブロックで指示されたスタートアドレスに制御が渡され
      ます。この時、割り込みは全てディセーブル、キャッシュはオフ（クリア）
      になっています。ユーザープログラムは自分で割り込みの許可、キャッシュ
      の制御を行います。


■４．２  ＣＤ－ＲＯＭのフォーマット

レイアウト
      ＋－－－－－－－－－－－－－＋---------------
      ｜      警告メッセージ      ｜*1 Audio Track
      ＋－－－－－－－－－－－－－＋---------------
+$0000｜レジストレーションブロック｜*2
      ＋－－－－－－－－－－－－－＋
+$0001｜インフォメーションブロック｜*2
      ＋－－－－－－－－－－－－－＋
+$0002｜                          ｜
      ｜    ユーザープログラム    ｜
      ｜                          ｜ Data Track
      ｜      ユーザーデータ      ｜
      ｜                          ｜
      ＋－－－－－－－－－－－－－＋----------------
      ｜                          ｜
      ＋－－－－－－－－－－－－－＋ Audio Track
      ｜                          ｜
      ＋－－－－－－－－－－－－－＋      or
      ｜                          ｜
      ＋－－－－－－－－－－－－－＋ Data Track
      ｜                          ｜
      ＋－－－－－－－－－－－－－＋----------------

*1  警告メッセージは必ず先頭に入れてください。
*2  インフォメーションブロックはレジストレーションブロックの次のレコード
    に入れてください。
    最初のトラックはレジストレーションブロックがなくても問題はありません
    が、問題がない限りレジストレーションブロックは最初のデータトラックに
    配置してください。


◆４．２．１  警告メッセージ

警告メッセージは、間違ってＰＣ－ＦＸ、ＰＣ－ＦＸＧＡ以外で再生を行った時
に、使用できないことを警告するＰＣＭデータです。特に、ＣＤエミュレータ上
で使用するものではありませんが、実際にＣＤ－ＲＯＭ上で動作させる時に、必
要になりますので、必ず使用してください。
ＣＤエミュレータで使用する警告メッセージは、ＧＭＡＫＥＲスタータキットプ
ラスに同梱されているものを使用します。
ＣＤ－ＲＯＭ内には \CD_DATA\WARNING.PCM に入っています。また、インストー
ルを行うと、A:\FXGA\CD_DATA\WARNINING.PCM に格納されます。（インストール
を行うディレクトリを A:\FXGA\ にした場合）


◆４．２．２  レジストレーションブロック

レジストレーションブロックは、ＰＣ－ＦＸ用のＣＤ－ＲＯＭであるかどうかを
認識するために存在します。さらに、ライセンスされたソフトウェアベンダーか
どうかを確認します。レジストレーションブロックのサイズは1レコード（2048バ
イト）です。ＣＤエミュレータで使用するレジストレーションブロックは、ＧＭ
ＡＫＥＲスタータキットプラスに同梱されているものを使用します。
ＣＤ－ＲＯＭ内には \CD_DATA\REGIST.BIN に入っています。また、インストール
を行うと、A:\FXGA\CD_DATA\REGIST.BIN に格納されます。（インストールを行う
ディレクトリをA:\FXGA\にした場合）


◆４．２．３  インフォメーションブロック

インフォメーションブロックは、ユーザープログラムのロード及び実行のための
情報が格納されています。またここにはボリューム情報も格納されており、複数
枚で構成されるアプリケーションに対応します。
インフォメーションブロックは１レコード（2048バイト）に以下のようにデータ
を配置します。

+0000  
  ：  ゲームのタイトル  *1
+0020
  ：  ローディングインフォメーションテーブル
+0030
  ：  メーカーＩＤ  *2
+0034
  ：  メーカー名  *1
+0070
  ：  ボリュームＮｏ．
+0074
  ：  バージョンＮｏ．
+0076
  ：  カントリーコード
+0078
  ：  日付
+0080
  ：  予約  *3
+0400
  ：  ユーザーエリア
+07FF

ローディングインフォメーションテーブル
+00
 ：  先頭レコード番号  *4
+04
 ：  転送レコード数
+08
 ：  読み込み先アドレス  *5
+0C
 ：  スタートアドレス
+0F


*1  シフトＪＩＳコードで登録してください。余った部分は０で埋めてください。
*2  PC-FXGAサポートセンターより発行されたメーカーＩＤ番号を指定してください。
    (メーカーＩＤ番号は、「ＧＭＡＫＥＲ」スタータキットのパッケージに同梱の
    「PC-FXGAソフトメーカーＩＤ登録申請書」で登録できます。
    尚、メーカーＩＤ番号のない方は、下記のサンプルファイルのように、FSW を
    指定します。）
*3  予約領域は0で埋めてください。
*4  このデータトラックの先頭レコード番号からのオフセットです。
*5  ゼロページエリアは指定しないでください。必ず8000h番地以降を指定してくだ
    さい。


《インフォメーションブロックの作成方法》
下記のファイルはＣＤ－ＲＯＭ内には \CD_DATA\INFO.S に入っています。また、イン
ストールを行うと、A:\FXGA\CD_DATA\INFO.S に格納されます。（インストールを行う
ディレクトリをA:\FXGA\にした場合）

下記のファイルの必要な箇所を変更し、アセンブル・リンクを行い INFO.BINを作成し
ます。アセンブル・リンクの方法は下記の通りです。詳細はFXAS.TXT("FXAS.EXE"の解
説）、FXLK.TXT("FXLK.EXE"の解説)を参照してください。

fxas info.s
fxlk -v /dseg:0 -Binfo.bin info.o


- info.s -
;
; sample of information file
;
; fxas info.s
; fxlk -v /dseg:0 -Binfo.bin info.o
;
;
	.data
;		 0123456789abcdef0123456789abcdef		
	db	'スーパーゲーム-RSZ'	;+0000 タイトル max 32 bytes
	align	$20
	dw	2			;+0020 スタートレコード
	dw	102			;+0024 読み込みレコード数
	dw	$8000			;+0028 読み込みアドレス
	dw	$8000			;+002c 実行スタートアドレス
;
MKFLD_T:
	db	'FSW',$00		;+0030 メーカーID
	db	'ＸＸＸＸＸＸソフト'	;+0034 メーカー名 60bytes
MKFLD_E:
	ds	64 - (MKFLD_E - MKFLD_T); padding
;
	dw	1			;+0070 ボリュームＮｏ
	dh	$0100			;+0074 version $0100 = 1.00	
	dh	1			;+0076 country code 1 = Japan
	db	'19940616'		;+0078 DATE 1994年6月16日
;
	align	1024
;USER DATA AREA
;後半１０２４バイトはユーザーのデータを置ける
	align	2048
;
;total 2048 bytes
;
;
----------


■４．３  ＣＤエミュレータ用データの作成例

４．２でＣＤ－ＲＯＭのフォーマットについて説明を行いましたが、実際にＣＤエミ
ュレータ上でアプリケーションを動作させるために、同じような情報をＣＤエミュレ
ータに理解させるためのファイルが必要になります。これをセクター再配置情報ファ
イルと呼び、そのファイルを作成することにより、ＣＤエミュレータを使用できるよ
うになります。
下記にセクター再配置情報ファイルの作成例を示します。

《セクター再配置情報ファイルの作成例》

- cdem.inf -
[drives]
        prog=.
        info=\fxga\cd_data\
[tracks]
        track1
        track2

[data.track1]
mode=audio
        info:warning.pcm

[data.track2]
mode = 1
        info:regist.bin
        prog:info.bin
        prog:sample.bin
----------

上記のファイルをＣＤＭＡＫＥを使用してセクター再配置情報ファイル CDEM.CDE を
作成します。作成方法は下記の通りです。詳細はNXCD2.TXT("CDMAKE.EXE"の解説)を
参照してください。

cdmake cdem.inf

これでセクター再配置情報ファイルの作成は終了しました。
但し、上記のファイルを見ると解るように、INFO.BIN と SAMPLE.BINを作成する必要
があります。INFO.BIN は、４．２．３で説明したとおり、INFO.S を必要な箇所を変
更し INFO.BIN（インフォメーションブロック）を作成します。SAMPLE.BIN は、第３
章で作成した SAPLE.EX をバイナリファイルに変更したものを作成します。

サンプルプログラムのバイナリファイルにするには、リンクの仕方を変更します。下
記にリンク方法を示します。（コンパイルは同じです。）

《サンプルプログラムのバイナリファイルの作成例》

fxlk @ind2

  インダイレクトファイル ind2 の内容は以下のとおりです。

- ind2 -
/cseg:8000 -B -o sample.bin 
\fxga\lib\_startup.o 
main.o 
\fxga\lib\libagl.a \fxga\lib\vlib.a \fxga\lib\libfarl.a
\fxga\lib\_stack.o 
---------

インフォメーションブロックを作成する方法を、下記に示します。

《インフォメーションブロックの作成例》

fxas info.s
fxlk -v /dseg:0 -Binfo.bin info.o

- info.s -
;
; sample of information file
;
; fxas info.s
; fxlk -v /dseg:0 -Binfo.bin info.o
;
;
	.data
;		 0123456789abcdef0123456789abcdef		
	db	'サンプルプログラム'	;+0000 タイトル max 32 bytes
	align	$20
	dw	2			;+0020 スタートレコード
	dw	XXX			;+0024 読み込みレコード数
	dw	$8000			;+0028 読み込みアドレス
	dw	$8000			;+002c 実行スタートアドレス
;
MKFLD_T:
	db	'FSW',$00		;+0030 メーカーID
	db	'ＸＸＸＸＸＸソフト'   	;+0034 メーカー名 60bytes
MKFLD_E:
	ds	64 - (MKFLD_E - MKFLD_T); padding
;
	dw	1			;+0070 ボリュームＮｏ
	dh	$0100			;+0074 version $0100 = 1.00	
	dh	1			;+0076 country code 1 = Japan
	db	'19960408'		;+0078 DATE 1996年4月8日
;
	align	1024
;USER DATA AREA
;後半１０２４バイトはユーザーのデータを置ける
	align	2048
;
;total 2048 bytes
;
;
----------

読み込みレコード数は SAMPLE.BIN のファイルサイズ ／ ２０４８ ＋ １の値になり
ます。

_STARTUP.Oを最初にリンクを行うと読み込みアドレスと実行アドレスは同じになり、
サンプルプログラムのバイナリファイルの作成例のようにリンクすると読み込み・実
行アドレスは 8000H になります。

上記のデータの作成例は、オンメモリ上のプログラムをＣＤエミュレータでブートで
きるようにしてあるだけです。ＣＤエミュレータでブートを行うには、ＰＣ－ＦＸＧ
Ａがリセットされた状態でなければなりません。デバッガを使用したり、ＣＤエミュ
レータを途中で中断した場合は実行できなくなります。ＣＤエミュレータではリセッ
トは行いませんので、他のツールでリセットを行う必要があります。「ＧＭＡＫＥＲ」
スタータキットプラスでは、特に用意していませんが「ＧＭＡＫＥＲ」スタータキッ
トに同梱されている \GIFTBOX\SAMPLE\PIO\RST.C をコンパイルして作成する実行フ
ァイルでリセットできます。（作成できないときは、ＰＣ－ＦＸＧＡに同梱されてい
る FXGA.EXE を実行すれば、リセットされます。）

実際にブートを行うサンプルプログラムを\SAMPLE\BGTEST\に収録していますので、そ
のサンプルを実行してください。


■４．４  ＣＤエミュレータを使用してのデバック方法

４．３で作成されるＣＤエミュレータ用のデータはブートを行うだけのアプリケーシ
ョンで、デバックを行うのにＣＤエミュレータを必要としません。
実際に、ＣＤエミュレータ用のデータを作成する時は、複数のプログラムファイル、
画像ファイル、サウンドファイルなどを用意し、アプリケーションの流れや、ＳＣＳ
Ｉのシーケンスをデバックします。

通常、下記のデバックを行う時にＣＤエミュレータを使用したデバックを行います。

１）全体のシーケンスをデバックする。
  一度ＰＣ－ＦＸＧＡの電源を落とし、ＣＤエミュレータを起動させブートからの動
  作シーケンスを確認する。

２）ＳＣＳＩ機能をした各モジュールをデバックする。
  ＣＤエミュレータを常駐させ、デバッガで各モジュールをＰＣ－ＦＸＧＡ上のメモ
  リに転送し、デバックを行う。

サンプルプログラムを\SAMPLE\SCSI_FX\に収録していますので、そのサンプルを実行
してください。

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

第５章  注意事項

■５．１  開発上の注意

１）「ＧＭＡＫＥＲ」スタータキットでは、実行時初期化のために_STARTUP.Oと_STACK
  .Oが用意されています。必ず_STARTUP.Oと_STACK.Oをリンクするようにして下さい。

２）「ＧＭＡＫＥＲ」スタータキットプラスでは、ＣＤエミュレータを動作させるため
  に WARNING.PCM と REGIST.BINが用意されています。必ずＣＤエミュレータを動作さ
  せるときは、使用してください。

３）ＣＤエミュレータ常駐させ、デバッガ上でＳＣＳＩコマンド処理を行っている最中
  にキーブレイクを掛けると、ＳＣＳＩのシーケンスがずれることがあります。ＳＣＳ
  Ｉコマンド処理時のキーブレイクはなるべく行わないでください。

・Microsoft,MS-DOS,Windowsは米国マイクロソフト社の登録商標です。

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

                                                           (C)1996 HUDSON SOFT
